home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1997 July / macformat52.iso / mac / Shareware Plus / Educational / LEE 2.1 / Source / stats.c.example < prev    next >
Text File  |  1996-08-09  |  2KB  |  78 lines

  1. /* fworld.c
  2.  *                         Copyright (1993)
  3.  *
  4.  *         Jeff Elman.  University of California, San Diego
  5.  *          Rik Belew.  University of California, San Diego
  6.  *      Stefano Nolfi.  Institute of Psychology, Rome.
  7.  *    Filippo Menczer.  University of California, San Diego
  8.  *        Greg Linden.  University of California, San Diego
  9.  *
  10.  *        This software may be redistributed without charge;
  11.  *                 this notice should be preserved.
  12.  */
  13.  
  14. #include "defs.h"
  15.  
  16.  
  17. /*
  18.  * called by generati() in populati.c;
  19.  * we save on the results (.dat) file
  20.  * whatever the experiment needs to monitor;
  21.  * format: [tab datum tab datum ... tab datum] 
  22.  */
  23. save_dat(fp)
  24.  
  25.     FILE    *fp;
  26. {
  27.     /*
  28.      * EXAMPLE OF USEFUL STATISTICS:
  29.      * 1. Average energy level over population.
  30.      * 2. Average age over population.
  31.      * 3. Average fit = (#offsprings).
  32.      * 4. Accumulated energy "disappeared" at death.
  33.      */
  34.     struct    indiv    *ap;
  35.             int    flag = -1;
  36.  
  37.         float    en_aver;
  38.         float    age_aver;
  39.         float    fit_aver;
  40.  
  41.     /*
  42.      * initialization
  43.      */
  44.     en_aver = 0.0;
  45.     age_aver = 0.0;
  46.     fit_aver = 0.0;
  47.  
  48.     /*
  49.      * go through population to collect complex stats
  50.      */
  51.         while ((ap = getnext_indiv(flag))->next != (struct indiv *) -1)
  52.         {
  53.         en_aver += ap->energy;
  54.         age_aver += (float)ap->lifecycle;
  55.         fit_aver += (float)ap->fit;
  56.  
  57.                 flag=0;
  58.         }
  59.  
  60.     /*
  61.      * normalizations
  62.      */
  63.     en_aver /= (float)pop_size;
  64.     age_aver /= (float)pop_size;
  65.     fit_aver /= (float)pop_size;
  66.  
  67.     /*
  68.      * the computed stats for this generation
  69.      * can finally be saved on the .dat file
  70.      */
  71.     fprintf(fp, "\t%.2f", en_aver);
  72.     fprintf(fp, "\t%.2f", age_aver);
  73.     fprintf(fp, "\t%.2f", fit_aver);
  74.     fprintf(fp, "\t%.2f", energy_reserve);
  75.  
  76. }
  77.  
  78.